Software applications seldom work flawlessly. Error reporting refers to the necessity of reporting errors in software operation to computer users, technical support personnel or to applicable software capable of dealing with an error. Typical error reporting schemes provide information and data regarding the error, but don't attempt to track the error or give updated information about possible resolution of the error. Rather, known error reporting schemes find the state an application is in at the time of an error and transfers the state to product support, without giving the user a sense of interaction. For example, an error reporting scheme could retrieve a dump of registers, the call stack and not provide feedback to a user. Rather, the user must pass information without having to understand what it is. If the user has a slow Internet connection, cooperation with product support can be a problem. If the Internet connection is failing or nonexistent, then the user may not be able to pass any information to customer support due to the length of the data requested. Also, the data can be highly technical deterring users from sending the data. For example, security worries include concerns that personal data is part of a physical dump to be sent because the user does not understand the content of the data.
Additionally, handling of program exceptions often assumes that there is a normal execution stack and an exception stack running in parallel. For reporting of exceptions, product support typically needs the state of the application stack and not of an exception handling stack. Often, however, the normal application stack is not accessible when an exception (error) is handled and reported. Retrieving the state of the application stack therefore causes extra code.
To assist product developers and users of a software product, problems in running applications often are reported to users as messages displayed in message boxes. The text of the message in the message box may be later looked up by the user in an on-line Knowledge Base (KB) for instructions for preventing or fixing the problem. However, KB articles are not guaranteed to contain the exact text from the message, or results of the search may not be helpful when the message is too generic to accommodate a range of possible errors. This becomes even more likely when an error displayed in an application via a message box can be related to a problem in some other component. A KB article can exist that is already associated with the problem in the other component, but may not exist for the error displayed in the application. Further, one problem may cause different messages to be displayed, not all of which are listed in the KB article. The message text displayed can be too general such that many matches are found. Localized error messages will be displayed on a localized system, requiring the user to search English or machine-translated KB articles, since a knowledge base is rarely human-translated into all languages in which software products are released. What is needed is a mechanism that solves the user interaction problems and associated problems when an application error occurs.